/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Studio7i;

import java.util.*;
import org.junit.Test;
import static org.junit.Assert.*;

/**
 *
 * @author Grupo 5
 */
public class ConsultaReservasTest {

    AdmSalas admSalas = new AdmSalas();
    AdmReserva admReserva = new AdmReserva();
    String resultado = "";

    @Test
    public void DebeBuscarReservaPorNombreDeSalaNombreDeLocalYDia() {
 
        // Preparar los datos de prueba
        
        //Intruoducir informacion de Sala
        String nombre = "sala 1";
        Local local = new Local("lm001", "Local 1", "algun lugar");
        int capacidadSala = 10;
        double costo = 120;
        // generar la lista de instrumentos
        List<Instrumento> instrumentos = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentos = new AdmInstrumentos();
        admInstrumentos.registrarInstrumento("guitarra", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        admInstrumentos.registrarInstrumento("guitarra", "Falcon", "Basic", "1989", "Criolla", 5.00);
        admInstrumentos.registrarInstrumento("bateria", "Tamborin", "SD23", "2010", "con platillos nuevos", 32.00);

        instrumentos = admInstrumentos.obtenerListaInstrumentos();
        // Generar la Lista de Servicios
        List<Servicio> servicios = new ArrayList<Servicio>();
        AdmServicios admServicios = new AdmServicios();
        admServicios.registrarServicio("Grabacion", 120.00);
        admServicios.registrarServicio("Partituras", 10.00);
        admServicios.registrarServicio("Musico", 70.00);
        servicios = admServicios.obtenerListaServicios();

        Sala sala = new Sala(nombre, local, instrumentos, servicios, capacidadSala, costo);
        admSalas.registrarSalaObjeto(sala);
        assertEquals(1, admSalas.getSala().size());

        //Introducir informacion de la reserva 1
        String dia = "12/10/11";
        double horaInicial = 10.00;
        double horaFinal = 12.00;
        // Generar la Lista de Instrumentos Adicionales
        List<Instrumento> instrumentosAd = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentosAd = new AdmInstrumentos();
        admInstrumentosAd.registrarInstrumento("Bajo", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        instrumentosAd = admInstrumentosAd.obtenerListaInstrumentos();

        // Generar la Lista de Servicios Adicionales
        List<Servicio> serviciosAd = new ArrayList<Servicio>();
        AdmServicios admServiciosAd = new AdmServicios();
        admServiciosAd.registrarServicio("Parlantes", 12.00);
        serviciosAd = admServiciosAd.obtenerListaServicios();

        //Introducir informacion de la reserva 2
        String dia2 = "12/10/11";
        double horaInicial2 = 14.00;
        double horaFinal2 = 16.00;
        // Generar la Lista de Instrumentos Adicionales
        List<Instrumento> instrumentosAd2 = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentosAd2 = new AdmInstrumentos();
        admInstrumentosAd2.registrarInstrumento("Organo", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        instrumentosAd2 = admInstrumentosAd2.obtenerListaInstrumentos();
        // Generar la Lista de Servicios Adicionales
        List<Servicio> serviciosAd2 = new ArrayList<Servicio>();
        AdmServicios admServiciosAd2 = new AdmServicios();
        admServiciosAd2.registrarServicio("Pistas", 6.00);
        serviciosAd2 = admServiciosAd2.obtenerListaServicios();

        admReserva.registrarReserva(sala, dia, horaInicial, horaFinal, instrumentosAd, serviciosAd);
        admReserva.registrarReserva(sala, dia2, horaInicial2, horaFinal2, instrumentosAd2, serviciosAd2);
        assertEquals(2, admReserva.getReserva().size());
         
        //Datos de Busqueda
        String nLocal = "Local 1";
        String nSala = "sala 1";
        String bDia = "12/10/11";
        
        
        // Ejecucion de la prueba
        
        resultado=admReserva.mostrarResultadoReservas(admReserva, nLocal, nSala, bDia);
        
        // Comprobar los resultados
        
        assertEquals(resultado,"Encontrada");
    }

    @Test
    public void DebeMostrarMensajeSiNoEncuentraReserva() {
        
        // Preparar los datos de prueba
        
        //Intruoducir informacion de Sala
        String nombre = "sala 1";
        Local local = new Local("lm001", "Local 1", "algun lugar");
        int capacidadSala = 10;
        double costo = 120;
        // generar la lista de instrumentos
        List<Instrumento> instrumentos = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentos = new AdmInstrumentos();
        admInstrumentos.registrarInstrumento("guitarra", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        admInstrumentos.registrarInstrumento("guitarra", "Falcon", "Basic", "1989", "Criolla", 5.00);
        admInstrumentos.registrarInstrumento("bateria", "Tamborin", "SD23", "2010", "con platillos nuevos", 32.00);

        instrumentos = admInstrumentos.obtenerListaInstrumentos();
        // Generar la Lista de Servicios
        List<Servicio> servicios = new ArrayList<Servicio>();
        AdmServicios admServicios = new AdmServicios();
        admServicios.registrarServicio("Grabacion", 120.00);
        admServicios.registrarServicio("Partituras", 10.00);
        admServicios.registrarServicio("Musico", 70.00);
        servicios = admServicios.obtenerListaServicios();

        Sala sala = new Sala(nombre, local, instrumentos, servicios, capacidadSala, costo);
        admSalas.registrarSalaObjeto(sala);
        assertEquals(1, admSalas.getSala().size());

        //Introducir informacion de la reserva 1
        String dia = "12/10/11";
        double horaInicial = 10.00;
        double horaFinal = 12.00;
        // Generar la Lista de Instrumentos Adicionales
        List<Instrumento> instrumentosAd = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentosAd = new AdmInstrumentos();
        admInstrumentosAd.registrarInstrumento("Bajo", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        instrumentosAd = admInstrumentosAd.obtenerListaInstrumentos();

        // Generar la Lista de Servicios Adicionales
        List<Servicio> serviciosAd = new ArrayList<Servicio>();
        AdmServicios admServiciosAd = new AdmServicios();
        admServiciosAd.registrarServicio("Parlantes", 12.00);
        serviciosAd = admServiciosAd.obtenerListaServicios();

        //Introducir informacion de la reserva 2
        String dia2 = "12/10/11";
        double horaInicial2 = 14.00;
        double horaFinal2 = 16.00;
        // Generar la Lista de Instrumentos Adicionales
        List<Instrumento> instrumentosAd2 = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentosAd2 = new AdmInstrumentos();
        admInstrumentosAd2.registrarInstrumento("Organo", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        instrumentosAd2 = admInstrumentosAd2.obtenerListaInstrumentos();
        // Generar la Lista de Servicios Adicionales
        List<Servicio> serviciosAd2 = new ArrayList<Servicio>();
        AdmServicios admServiciosAd2 = new AdmServicios();
        admServiciosAd2.registrarServicio("Pistas", 6.00);
        serviciosAd2 = admServiciosAd2.obtenerListaServicios();

        admReserva.registrarReserva(sala, dia, horaInicial, horaFinal, instrumentosAd, serviciosAd);
        admReserva.registrarReserva(sala, dia2, horaInicial2, horaFinal2, instrumentosAd2, serviciosAd2);
        assertEquals(2, admReserva.getReserva().size());

        //Datos de Busqueda
        String nLocal = "Local 1";
        String nSala = "Sala 3";
        String bDia = "12/10/12";
        
        // Ejecucion de la prueba
        
        resultado=admReserva.mostrarResultadoReservas(admReserva, nLocal, nSala, bDia);
        
        // Comprobar los resultados
        
        assertEquals(resultado,"No encontrada");
        
    }
    
    @Test
    public void DebeMostrarDetalledeReservaSeleccionada() {

        //Datos de Reserva Seleccionada
        //Introducir informacion de Sala

        String nombre = "sala 1";
        Local local = new Local("lm001", "Local 1", "algun lugar");
        int capacidadSala = 10;
        double costo = 120;
        // generar la lista de instrumentos
        List<Instrumento> instrumentos = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentos = new AdmInstrumentos();
        admInstrumentos.registrarInstrumento("guitarra", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        admInstrumentos.registrarInstrumento("guitarra", "Falcon", "Basic", "1989", "Criolla", 5.00);
        admInstrumentos.registrarInstrumento("bateria", "Tamborin", "SD23", "2010", "con platillos nuevos", 32.00);

        instrumentos = admInstrumentos.obtenerListaInstrumentos();
        // Generar la Lista de Servicios
        List<Servicio> servicios = new ArrayList<Servicio>();
        AdmServicios admServicios = new AdmServicios();
        admServicios.registrarServicio("Grabacion", 120.00);
        admServicios.registrarServicio("Partituras", 10.00);
        admServicios.registrarServicio("Musico", 70.00);
        servicios = admServicios.obtenerListaServicios();

        Sala sala = new Sala(nombre, local, instrumentos, servicios, capacidadSala, costo);
        admSalas.registrarSalaObjeto(sala);
        assertEquals(1, admSalas.getSala().size());

        //Introducir informacion de la reserva 1
        String dia = "12/10/11";
        double horaInicial = 10.00;
        double horaFinal = 12.00;
        // Generar la Lista de Instrumentos Adicionales
        List<Instrumento> instrumentosAd = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentosAd = new AdmInstrumentos();
        admInstrumentosAd.registrarInstrumento("Bajo", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        instrumentosAd = admInstrumentosAd.obtenerListaInstrumentos();

        // Generar la Lista de Servicios Adicionales
        List<Servicio> serviciosAd = new ArrayList<Servicio>();
        AdmServicios admServiciosAd = new AdmServicios();
        admServiciosAd.registrarServicio("Parlantes", 12.00);
        serviciosAd = admServiciosAd.obtenerListaServicios();
        
        admReserva.registrarReserva(sala, dia, horaInicial, horaFinal, instrumentosAd, serviciosAd);

         // Ejecucion de la prueba
        
        resultado = admReserva.mostrarDetalleReserva(sala, dia, horaInicial, horaFinal, instrumentosAd, serviciosAd);
        
        // Comprobar los resultados
        
        assertEquals(resultado,"ok");
        
    }
}
